Skip to main content

Flutter Aspect 集成

由于 Dart 语言未提供在编译期修改代码的整套 API,所以 Flutter SDK 的无埋点需要通过修改 Dart 源码方式织入外部的 Transformer 能使其在 dart 代码优化前参与到 Flutter 代码的编译中;在 Flutter 的源码中添加整套 Transformer 流程的 API,使其实现 Aspect 功能。

基于上述说明,我们的 Flutter SDK 无埋点方案基于修改 Flutter 源代码的方式进行,需要拉取 GitHub 上的 Flutter SDK。 具体安装可以参考官方引导:Install Flutter From Github

然后再根据你开发使用的 Flutter 版本,切换到相应的 tag 分支上。

info

目前支持 Flutter SDK 版本为 v3.35.3v3.24.4v3.22.1 以及 v3.3.0v3.19.6 间大部分主要版本.

后续将随着 Flutter SDK 的更新会持续推出新的版本,若需要支持特定的 Flutter 版本,请在 Github Issues 中提交请求或者向客户成功经理咨询方案。

安装方式

共有两种方式选择,一是手动替换文件,二是下载一键替换脚本。

首先,请访问我们的 Growingio-Dart-Frontend,该项目的 tag 对应 Flutter 版本,请根据自己项目的 Flutter 版本切换到相应 tag。

比如 Flutter 3.35.3 版本,则切换到 tree/3.35.3

下载并替换 AOT Snapshot

请下载对应您当前平台架构的 frontend_server_aot.dart.snapshot 文件

具体位置为 /lib/flutter_frontend_server/<您当前的平台架构,如darwin_arm64>/frontend_server_aot.dart.snapshot

需要在 Flutter SDK 下进行文件替换 (若文件存在则替换),位置分别为:

  • Flutter SDK 版本号大于等于 3.24.0:
    • macos: <flutter sdk dir>/bin/cache/artifacts/engine/darwin-x64/frontend_server_aot.dart.snapshot
    • windows: <flutter sdk dir>/bin/cache/artifacts/engine/windows-x64/frontend_server_aot.dart.snapshot
    • linux: <flutter sdk dir>/bin/cache/artifacts/engine/linux-x64/frontend_server_aot.dart.snapshot
  • Flutter SDK 版本号大于等于 3.19.0: <flutter sdk dir>/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot

下载并替换 JIT Snapshot (仅旧版本需要)

对于 Flutter 3.24.0(不包含 3.24.0)以下的版本,还需要下载 frontend_server.dart.snapshot 文件

具体位置为 /lib/flutter_frontend_server/frontend_server.dart.snapshot

需要在 Flutter SDK 下进行文件替换 (若文件存在则替换),位置分别为:

  • macos: <flutter sdk dir>/bin/cache/artifacts/engine/darwin-x64/frontend_server.dart.snapshot
  • windows: <flutter sdk dir>/bin/cache/artifacts/engine/windows-x64/frontend_server.dart.snapshot
  • linux: <flutter sdk dir>/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot
  • <flutter sdk dir>/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot

清除缓存

覆盖 snapshot 后需要清理缓存

flutter clean

若是已经集成 Flutter 无埋点插件,重新编译后,无埋点就能正常运行了。

卸载无埋点

若是需要恢复至集成无埋点之前的状态,可以到 <flutter sdk dir> 下运行以下命令,恢复原来的文件。

git reset --hard 
或者
git reset --hard <tag>

rm -rf bin/cache ## 用来删除缓存